export const authAbtnClick = {
    // 绑定到元素时触发，只调用一次
    created(el, binding) {
        const clickHandler = customClick(el, binding);
        el.addEventListener('click', clickHandler);
        el._customClickHandler = clickHandler; // 保存引用，以便卸载时使用
    },

    // 在绑定元素的父组件被挂载时调用
    mounted(el, binding) {
        // 如果有需要在挂载时执行的逻辑，可以添加在这里
        // 设置元素等级
        const { getUserInfoData, getRolesData } = useUserStoreHook()
        const userInfo = getUserInfoData()
        const rolesData = getRolesData()
        const value = el.getAttribute('data-value');

        // 检查用户是否有权限访问
        const resources = userInfo.resources;
        const menuResources = userInfo.menuResources;
        const isUserAuthorized = menuResources && menuResources.split(',').indexOf(value) !== -1;

        if (isUserAuthorized) {
            // 找到对应的权限等级
            const results = findValues(rolesData, value);
            if (results && results.length > 0) {
                el.setAttribute('data-level', results[0].lv);
            }
        }

        let divValue = el.getAttribute('data-value');
        if (!divValue) {
            const elements = el.querySelectorAll('[data-value]');
            // 遍历这些元素并获取其 data-value 属性值
            elements.forEach(el => {
                const val = el.getAttribute('data-value');
                if (val) {
                    divValue = val
                }
            });
        }
        // 创建一个覆盖层
        if (divValue) {
            const isHaveResources = resources && resources.split(',').indexOf(divValue) !== -1;
            if (!isHaveResources) {
                var elements = el.querySelectorAll('input');
                elements.forEach(function (element) {
                    if (element.tagName.toLowerCase() === 'input') {
                        var overlay = document.createElement('div');
                        overlay.className = 'overlay';
                        // 插入覆盖层到文档中
                        el.appendChild(overlay);
                    }
                })
            }
        }
    },

    // 在包含组件的 VNode 更新后调用
    updated(el, binding) {
        // 如果binding.value更新，需要重新绑定
        if (binding.oldValue !== binding.value) {
            el.removeEventListener('click', el._customClickHandler);
            const newHandler = customClick(el, binding);
            el.addEventListener('click', newHandler);
            el._customClickHandler = newHandler;
        }
    },

    // 在绑定元素的父组件被卸载时调用
    unmounted(el) {
        el.removeEventListener('click', el._customClickHandler);
    },
}